精  
哈哈,终于知道用MW生成的mfl文件和mfs文件的结构了,发帖庆祝!
id: 630365351 | 楼主:_AgOH | 返回首页
id: 6541353707
1L | 作者:_AgOH | 发布于 2009-08-19 12:33

啦啦啦~~~


id: 6541376133
2L | 作者:_AgOH | 发布于 2009-08-19 12:36

结论1:
二者均使用GZip格式压缩,可以轻松地使用 WinRAR或 7-Zip 打开
结论2:
打开后里面是一个纯文本文件,至于如何从里面提取信息嘛,呵呵,先留个悬念,以后再说!呵呵~



id: 6541383068
3L | 作者:_AgOH | 发布于 2009-08-19 12:37

另外特别感谢:
http://tieba.baidu.com/f?ct=335675392&tn=baiduPostBrowser&sc=3225135766&z=317297237&pn=0&rn=30&lm=0&word=%D3%C0%D4%B6%B5%C4%C2%EA%C0%F6#3225135766
46L、47L



id: 6541841484
4L | 作者:飞翔的耀西 | 发布于 2009-08-19 13:43

mfsx文件就是解压缩后的mfs文件


id: 6541932888
5L | 作者:HappyLee_12 | 发布于 2009-08-19 13:56

啊!!!


id: 6543058089
6L | 作者:_AgOH | 发布于 2009-08-19 16:33

OK,下面我将分成几部分来介绍mflx(让我们暂时把解压缩后的MFL文件称为mflx文件吧~~) 而解压后的mfs文件就是mfsx文件。
1.MFLX文件的结构。
2.MFSX文件的结构。
3.如何把MFS文件反编译为MFL文件(我们的终极目标!!呵呵)
下面开始——————在我说THE END之前禁止插楼,呵呵!



id: 6543484536
7L | 作者:_AgOH | 发布于 2009-08-19 17:33

1.MFLX文件的结构.
1)头部(Header):
我们把BlocksDataStart之前的数据称为MFLX文件的头部,这一部分储存着关卡的基本信息,一共10行,大多可以在PREF'S部分设置。
行          含义              举例            举例释义     
1          (关卡长度*32)+10       6410        关卡长度=(6410-10)/32=200     
2          (关卡高度*32)+10       650        关卡高度=(650-10)/32=20
3         关卡名称             1-1            关卡名为1-1
4          关卡作者             _AgOH          关卡作者为_AgOH
5         关卡时间              400           关卡时间为400s
6         重力(1-5)          4             重力为4
7         库巴能量              10            库巴一共10格能量
8         水的深度信息          1900          这个数据的计算方法较为复杂,
                                             目前尚在研究当中,数值越大,
                                             水就越浅
9         关卡背景              3             第3个背景(GRASSLANDS)
10        背景音乐             7             音乐7(Map2)



id: 6543910267
8L | 作者:_AgOH | 发布于 2009-08-19 18:38

2)方格数据(BlocksData)
下面我们就要进入mflx的核心了,这一部分存储的是Blocks的信息,其内容介于BlocksDataStart与BlocksEnd之间。咋一眼看去,哇,都是0101,看不懂?其实,不要担心,这不是2进制数据,更不是乱码,而是每一个方格的Block信息!其实SoftEndo在这一点上的处理相当弱智------他居然使用遍历的方法,每一个方格的信息都写入,即使这是个空的方格!
BlocksData一共分为n行,每一行对应关卡的一行,例如关卡的高度为50,那么一共就50行。每一个方格占用2个字节储存信息,例如关卡长度为300,那么每一行就有600个字节。储存每个方格Block信息的是利用对应Block的ID,如水管管体左部为17,右部为18,而如果什么都没有就用00来存储(具体每个Block的ID是什么就不说了,相信大家也不太需要这些数据。了解了这个规则,再看一看文件,不可思议的事情发生了:由1~9这9个数字居然组成了这个地图!多么完美的地形!!!



id: 6544096913
9L | 作者:_AgOH | 发布于 2009-08-19 19:08

3)其它数据(Other Data)
上面说得这么多,您可能要说了:关卡的内容不仅仅是Blocks啊,还有风景(Scenery)、敌人(Enemies)等,呵呵,不要着急,BlocksEnd下面还有东西呢!
BlocksEnd下的数据分为若干行,每一行有11个字节,不过这些数据就更难解读了,先来说说基本格式吧:
21800160480
218:物品ID 0016:物品X坐标(是乘上8之后的结果) 0480物品Y坐标(是乘上32后的结果)
这里坐标的计算原则与我们平时不相同,左上角为(0,0)往右X坐标增加,往下Y坐标增加
因此,上面的数据被解析为:在坐标(2,15)下放一个实心块(实心块的ID为218)
又如:
00108160448
含义为:在坐标(102(=816/8),14(=448/32))下放一个Gommba(ID=001)
具体的物品与其ID的关系,有兴趣的朋友们可以去研究研究~
OK,貌似这个文件都分析完了?不对,后面怎么还有三个小黑块??呵呵,其实这个并不是什么神秘的东西,它只是标记这个文件的结束罢了~呵呵~
OK,mfl分析完了,下面该分析MFS了。。。



id: 6544184695
10L | 作者:_AgOH | 发布于 2009-08-19 19:21

2.mfsx文件的结构.
其实mfsx文件就是几个mflx的简单拼接,并未经过任何特殊处理,因此要反编译这些文件是相当简单的!!当然mw为了识别每一个关卡,还是要加一些分界线的,好了,现在什么都不说了,立刻开始吧!!
1)头部(Header)
除了mfl文件之外,mfs文件还要储存一些特殊信息,但是这样的信息只有1项:Mario的生命数,所以MFS文件的头部也只有1行!这一行就是Mario 的生命数,如15。
下面就是mfsx文件的主体了。
2)关卡分界线(New Level)
在mfs里,New Level字符的出现,将意味着一个mfl文件的结束(关卡1除外),以及另外一个mfl的开始。所以,New Level就是关卡的分界线啦~
3)小关卡主体(MFL Body)
在两个New Level之间的数据是这个关卡的主体,将它提取出来就是mflx文件啦!其实这就是反编译的原理,后面我会详细介绍~
4) 结束标志(The End)
与mflx相同,mfsx同样使用一个小黑块作为文件结束标志。



id: 6544285122
11L | 作者:_AgOH | 发布于 2009-08-19 19:36

3.如何把mfs文件反编译为mfl文件。
其实可能部分朋友看到这里已经学会反编译的方法,不过为了方便新手们学习,这里还是在唠叨几句k~
所需工具:支持GZip解压缩的工具(如WinRAR、7-Zip、GZip等)、支持GZip压缩的工具(如7-Zip、GZip等)、一个mfs地图文件。
OK,操作开始----
1.使用GZip解压工具打开MFS文件,提取出里面的MFSX文件。
2.仿照2.3的方法,从里面提取出mflx文件。
3.使用GZip解压工具将mflx文件压缩,然后扩展名改为mfl。
OK,现在------大功告成!用MW打开反编译后的MFL文件,看看我们是不是成功了!

--------------THE END------------

另外,此贴申精,毕竟它费了我不少的时间哈!!感谢大家支持!



id: 6547188989
12L | 作者:syzxchulun | 发布于 2009-08-20 08:52

楼主太强大了@_*...


id: 6547436306
13L | 作者:_AgOH | 发布于 2009-08-20 09:47

唉~顶的人太少了~它可是花费了我3个多小时研究出来的成果啊


id: 6547503761
14L | 作者:_AgOH | 发布于 2009-08-20 10:00

还是再发个图片吧~反编译后的HLCrazyWorld6-1(说明:绝无恶意,仅供学习研究之用,请HL不要见怪~)


id: 6547629603
15L | 作者:Koppa_Maker | 发布于 2009-08-20 10:22

ding


id: 6547936082
16L | 作者:CXY0101 | 发布于 2009-08-20 11:11

狂顶LZ
我还以为是一些无意义的数据呢



id: 6548122164
17L | 作者:飞翔的耀西 | 发布于 2009-08-20 11:40

回复:11楼
我在你之前(昨天下午)就把反编译的方法发到Softeno论坛了,哈哈
http://www.softendo.com/forum/viewtopic.php?f=12&t=514



id: 6548135197
18L | 作者:60.210.40.* | 发布于 2009-08-20 11:42

ding!!!!!


id: 6548175243
19L | 作者:SUPERMARIOFORE | 发布于 2009-08-20 11:48

好!


id: 6548262615
20L | 作者:y479021776 | 发布于 2009-08-20 12:01

你用的什么工具啊?


id: 6548511039
21L | 作者:y479021776 | 发布于 2009-08-20 12:43

谁能教教我呀?


id: 6549405016
22L | 作者:_AgOH | 发布于 2009-08-20 15:02

回20楼:你说的是反编译MFS文件么?我在10楼已经说得很清楚了,不过现在据lyh说未经压缩的mfl文件也能被读取,所以你只需要有WinRAR就够了~如果还没有的话~那么直接从mfsx文件中提取也可以.


id: 6549430282
23L | 作者:y479021776 | 发布于 2009-08-20 15:06

可是MFL文件用MW打不开啊


id: 6549431851
24L | 作者:_AgOH | 发布于 2009-08-20 15:06

回17楼:

As for the structure of the level, I DON'T KNOW, SORRY. (But one of my friend knows)

-------------------------------------
-------------------------------------
..............
另外很感谢你给我提了个醒,就是未经压缩的MFL文件和MFS文件同样能被MW接受!



id: 6549442667
25L | 作者:y479021776 | 发布于 2009-08-20 15:08

还是不懂


id: 6549452898
26L | 作者:_AgOH | 发布于 2009-08-20 15:09

????打不开?请确定:
1.你的mfl文件是严格按照10楼和11楼的方法提取出来的,且未经过压缩x.
2.如果你把文件压缩了的话,请确定必须是GZip格式.



id: 6549480696
27L | 作者:y479021776 | 发布于 2009-08-20 15:14

看不懂10F啊


id: 6549530892
28L | 作者:y479021776 | 发布于 2009-08-20 15:21

还是不懂


id: 6549546269
29L | 作者:_AgOH | 发布于 2009-08-20 15:23

唉,还是到Hi里聊吧,这样会比较方便


id: 6549845282
30L | 作者:Anti_Tencent | 发布于 2009-08-20 16:08

我刚发现这一点,正准备说,没想到……


id: 6549997950
31L | 作者:飞翔的耀西 | 发布于 2009-08-20 16:30

回复:24楼
早发现了……



id: 6555790998
32L | 作者:_AgOH | 发布于 2009-08-21 13:59

唉~看来我又落后了~~


id: 6578991609
33L | 作者:_AgOH | 发布于 2009-08-24 21:40

注意:更正该帖子一重要错误:9楼中的第2项数据是X坐标乘上32之后的结果,而不是8!


id: 7658715604
34L | 作者:newlife2017 | 发布于 2010-03-13 11:11

2000
2000
NEWLIFE WORLD1
newlife2017
400
5
5
1400
0
17
BlocksDataStart
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000



id: 7658715605
35L | 作者:newlife2017 | 发布于 2010-03-13 11:11

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000



id: 7658715606
36L | 作者:newlife2017 | 发布于 2010-03-13 11:11

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
BlocksEnd



id: 8137404094
37L | 作者:newlife2017 | 发布于 2010-05-09 16:51

我做nlw的时候,开始时改了一下参数发的,按照agoh的介绍,供大家参考


id: 11228820991
39L | 作者:祝贺高考成功3 | 发布于 2011-02-08 17:24

2.仿照2.3的方法,从里面提取出mflx文件。
怎么回事???
另外,恕我挖坟,求求吧主了。



id: 11229387104
40L | 作者:Fahlee | 发布于 2011-02-08 18:17

回复:39楼
这种东西不能告诉别人



id: 11229488376
42L | 作者:GlaDOS_Nice | 发布于 2011-02-08 18:26

顶个帖子没有封号的道理
另外如果不是抄袭、套作、挪用的话反编译说到底也是交流学习的一种方式,毕竟MW不是商业软件,无所谓保密与否



id: 11229960669
43L | 作者:Anti_Tencent | 发布于 2011-02-08 19:07

Fahlee你有点过了。
MW关卡又没有版权,拆解也好,修改也好,只要没有把它换个名字重新发布就行。



id: 11231276902
46L | 作者:Anti_Tencent | 发布于 2011-02-08 20:43

回复:44楼

你干什么?



id: 11231399311
47L | 作者:Fahlee | 发布于 2011-02-08 20:52

得了得了,反正反编译MW关卡没什么,但是拿去录像就有点过了....41楼的话当作没说过吧....


id: 11231416686
48L | 作者:Fahlee | 发布于 2011-02-08 20:53

44,45楼涉嫌刷屏和灌水,删之~
楼上补充,如果是这样来展现自己的技术的话,鄙视也是理所当然



id: 11232853748
49L | 作者:y479021776 | 发布于 2011-02-08 22:26

**好吃!


id: 11242554803
50L | 作者:祝贺高考成功3 | 发布于 2011-02-09 19:32

楼上太香了!


id: 11264757680
51L | 作者:eeekaaa | 发布于 2011-02-11 15:18

我也要!


id: 11293570565
52L | 作者:祝贺高考成功3 | 发布于 2011-02-13 20:43

sucker!!!!!
楼上好吃!!!!!



id: 16807449559
54L | 作者:newlife2017 | 发布于 2012-01-26 15:04

@nmnmoooh @Fahlee_5


id: 16809062330
55L | 作者:Fahlee_5 | 发布于 2012-01-26 16:38

啊,53楼被我误删了...sorry....


id: 17719391731
56L | 作者:chslrer | 发布于 2012-03-06 09:18

很好,很强大,受教了,这种技术篇应该支持才对,


id: 17726332815
57L | 作者:Fahlee | 发布于 2012-03-06 14:46

不要挖坟,谢谢合作